package com.zzw.springboot.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zzw.springboot.bean.ProductCategory;
import com.zzw.springboot.bean.Supplier;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品分类DAO接口
 */
public interface ProductCategoryMapper extends BaseMapper<ProductCategory> {
    /**
     * 添加商品分类
     * @param category 分类信息
     * @return 影响行数
     */
    int insertCategory(ProductCategory category);

    /**
     * 更新商品分类
     * @param category 分类信息
     * @return 影响行数
     */
    int updateCategory(ProductCategory category);

    /**
     * 删除商品分类
     * @param categoryId 分类ID
     * @return 影响行数
     */
    int deleteCategory(Integer categoryId);

    /**
     * 根据ID查询商品分类
     * @param categoryId 分类ID
     * @return 分类信息
     */
    ProductCategory selectCategoryById(Integer categoryId);

    /**
     * 查询商品分类列表
     * @param category 查询条件
     * @return 分类列表
     */
    List<ProductCategory> selectCategoryList(ProductCategory category);

    /**
     * 查询全部分类
     * @return 分类列表
     */
    List<ProductCategory> selectAllCategories();

    /**
     * 查询子分类数量
     * @param categoryId 分类ID
     * @return 数量
     */
    int selectChildCount(Integer categoryId);

    /**
     * 验证分类名称是否存在
     * @param categoryName 分类名称
     * @param parentId 父分类ID
     * @param categoryId 分类ID（排除项）
     * @return 数量
     */
    int checkCategoryNameExists(@Param("categoryName") String categoryName,
                         @Param("parentId") Integer parentId,
                         @Param("categoryId") Integer categoryId);
}
